/*
 * @Author: wuqingchun
 * @Date: 2024-09-25 17:48:06
 * @Description: 消息格式定义
 * @LastEditors: wuqingchun
 * @LastEditTime: 2024-10-03 15:41:26
 */
#ifndef __CHAT_MSG_H__
#define __CHAT_MSG_H__

#include <cstdint>

#define CHAT_VERSION         1

#define CHAT_USER_MAXLEN        31
#define CHAT_PASSWORD_MAXLEN    31


#define CHAT_MSG_ERR_REGISTER  1
#define CHAT_MSG_ERR_LOGIN     2
#define CHAT_MSG_ERR_LOGOUT  3


typedef enum tagChatMsgType
{
    CHAT_MSG_REGISTER = 0,               // 用户注册
    CHAT_MSG_REGISTER_RSP,               // 用户注册应答
    CHAT_MSG_LOGIN,                      // 用户登录
    CHAT_MSG_LOGIN_RSP,                  // 用户登录应答
    CHAT_MSG_CHAT,                       // 一对一聊条
    CHAT_MSG_ADD_FRIEND,                 // 添加好友
    CHAT_MSG_CREATE_GROUP,               // 创建群组
    CHAT_MSG_JOIN_GROUP,                 // 加入群组
    CHAT_MSG_EXIT_GROUP,                 // 退出群组
    CHAT_MSG_LOGOUT,                     // 用户退出
    CHAT_MSG_LOGOUT_RSP,                 // 退出应答
    CHAT_MSG_MAX
}CHAT_MSG_TYPE_E;


// 消息头
typedef struct tagChatMsgHead
{
    uint16_t usType;
    uint16_t usVersion;
    uint32_t uiMsgLen;
}CHAT_MSG_HEAD_S;

typedef struct tagChatMsgUserRegister
{
    char szUser[CHAT_USER_MAXLEN + 1];
    char szPassword[CHAT_PASSWORD_MAXLEN + 1];
}CHAT_MSG_USER_REGISTER_S;

typedef struct tagChatMsgUserLogin
{
    char szUser[CHAT_USER_MAXLEN + 1];
    char szPassword[CHAT_PASSWORD_MAXLEN + 1];
}CHAT_MSG_USER_LOGIN_S;

typedef struct tagChatMsgUserLogout
{
    char szUser[CHAT_USER_MAXLEN + 1];
}CHAT_MSG_USER_LOGOUT_S;

typedef struct tagChatMsgSetResponse
{
    int iErrNo;
}CHAT_MSG_SET_RESPONSE_S;


typedef struct tagChatMsgChat
{
    char szTo[CHAT_USER_MAXLEN];
    char acData[];
}CHAT_MSG_CHAT_S;

#endif //__CHAT_MSG_H__